FileSystemObserver: observe() method
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.
The observe()
method of the
FileSystemObserver
interface asks the observer to start observing changes to a given file or directory.
Syntax
observe(handle)
observe(handle, options)
Parameters
handle
-
The handle of the file system entry representing the file or directory to observe.
- For the user-observable file system, this can be a
FileSystemFileHandle
or aFileSystemDirectoryHandle
. - For the Origin Private File System (OPFS), it can be a
FileSystemFileHandle
, aFileSystemDirectoryHandle
, or aFileSystemSyncAccessHandle
.
- For the user-observable file system, this can be a
options
Optional-
An object specifying options for the
observe()
call. This can contain the following properties:recursive
-
A boolean specifying whether you want to observe changes to a directory recursively. If set to
true
, changes are observed in the directory itself and all contained subdirectories and files. If set tofalse
, changes are only observed in the directory itself and directly contained files (that is, files in subdirectories are excluded). Defaults tofalse
.This property has no effect if
handle
represents a file.
Return value
Exceptions
NotFoundError
DOMException
-
Thrown if the file or directory represented by
handle
could not be found.
Examples
Observe a file or directory
Assuming a FileSystemObserver
instance is available, you can start observing changes to a file system entry by calling observe()
.
You can observe a file or directory in the user-observable file system or the Origin Private File System (OPFS) by passing a FileSystemFileHandle
or FileSystemDirectoryHandle
to observe()
. Instances of these objects can be returned, for example, when asking the user to select a file or directory using Window.showSaveFilePicker()
or Window.showDirectoryPicker()
:
// Observe a file
async function observeFile() {
const fileHandle = await window.showSaveFilePicker();
await observer.observe(fileHandle);
}
// Observe a directory
async function observeDirectory() {
const directoryHandle = await window.showDirectoryPicker();
await observer.observe(directoryHandle);
}
You can also observe changes to the OPFS by passing a FileSystemSyncAccessHandle
to observe()
:
// Observe an OPFS file system entry
async function observeOPFSFile() {
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
const syncHandle = await draftHandle.createSyncAccessHandle();
await observer.observe(syncHandle);
}
Observe a directory recursively
To observe a directory recursively, call observe()
with the recursive
option set to true
:
// Observe a directory recursively
async function observeDirectory() {
const directoryHandle = await window.showDirectoryPicker();
await observer.observe(directoryHandle, { recursive: true });
}
Specifications
Not currently part of a specification. See https://github.com/whatwg/fs/pull/165 for the relevant specification PR.
Browser compatibility
See also
- File System API
- The File System Observer API origin trial on developer.chrome.com (2024)